$(document).ready(
		function() {
			
			var isChanged = false;
			var isLineAdd = false;
			
			// gestion de l'ouverture de la popup de suppression d'un perimetre
			$("button[id^='supprimerPerimetre_']").click(function(e) {
				e.preventDefault();
				var idPerimetre = this.id.split("_")[1];
				$("#idPerimetreToDelete").val(idPerimetre);
				$("#popup_block").css("display", "block");
				$("#contenair_popup_supprimer").css("display", "block");
			});
			
			// gestion de la fermeture de la popup de suppression
			$("#close_pop_supprimer").click(
					function(e) {
						$("#popup_block").css("display", "none");
						$("#contenair_popup_supprimer").css(
								"display", "none");
					});
			
			// gestion de l'ovuerture de la popup de modification
			$("button[id^='modifierPerimetre_']").click(
					function(e) {
						e.preventDefault();
						var idPerimetre = this.id.split("_")[1];

						// Je requete AJAX pour recuperer les activités liées au
						// périmetre
						var data = {
							"idPerimetre" : idPerimetre
						};
						$.getJSON(
								'ajax/ajaxGetListeActiviteByPerimetre.action',
								data, function(data) {
									ouvrirPopupModifAvecData(data);
								});
					});

			// gestion de la fermeture de la popup
			$("#close_pop_modifier").click(
					function(e) {
						gererQuitterSansSauver();
					});
			
			// gestion de la soumission d'une nouvelle activité
			$("#submitAddActivite").click(function(e) {
				
				isChanged = true;
				
				// Je verifie si les champss ne sont pas vides
				var libelleActivite = $("#inputAddActiviteLibelle").val();
				if (libelleActivite == ""){
					$("#inputAddActiviteLibelle").addClass("inputNonRempli");
					return;
				}
				var remarque = $("#inputAddActiviteRemarque").val();
				
				// Si tout s'est bien passé, je l'ajoute dans le tableau
				ajouterActivitesDansTableau(libelleActivite, remarque);
				
				$("#inputAddActiviteLibelle").val("");
				$("#inputAddActiviteRemarque").val("");
				
			});
			
			// Gestion du clic sur l'ajout d'un nouveau périmètre
			$("#addPerimetre").click(function(e) {
				$("#popup_block").css("display", "block");
				$("#contenair_popup_creer").css("display", "block");
			});
			
			// gestion du clic de fermeture de la popup de creation
			$("#close_pop_creer").click(
					function(e) {
						$("#popup_block").css("display", "none");
						$("#contenair_popup_creer").css(
								"display", "none");
						clearAllError();
					});
			
			// Gestion du clic d'annulation de suppression
			$("#annulerSupprPerimetre").click(function(e) {
				e.preventDefault();
				$("#popup_block").css("display", "none");
				$("#contenair_popup_supprimer").css(
						"display", "none"); 
				clearAllError();
			});
			
			// gestion du clic d'annulation de modification de perimetre
			$("#annulerModifPerimetre").click(function(e){
				e.preventDefault();
				gererQuitterSansSauver();
			});
			
			// Fonctions
			function ajouterActivitesDansTableau(libelle, remarque){
				
				// Gestion de l'ajout de la ligne de séparation des activités
				// ajoutée
				if (isLineAdd == false){
					isLineAdd = true;
					var lineAdd = '<tr"><td>Lignes ajoutées</td><td></td><td></td></tr>';
					$("#tabModifPerimetre").append(lineAdd);
				}
				
				var ligne = "<tr>";
				ligne = ligne + '<td><input value="'+ libelle + '" class="form-control" type="text" maxlength="255" name="libellesNouvellesActivites"></td>';
				ligne = ligne + '<td>' + '<textarea class="form-control noResize" name="remarquesNouvellesActivites">' + remarque + '</textarea></td>';
				ligne = ligne + '<td><a class="asLink supprNewActivite"><img src="/agraf/assets/img/erase.png" /></a></td>';
				ligne = ligne + '</tr>';
				$("#tabModifPerimetre").append(ligne);
				
				// j'ajoute les listener pour la suppression de ligne
				$(".supprNewActivite").on("click", function (e){
					$(this).parent().parent().remove();
				});
			}
			
			/**
			 * Retire toutes les lignes du tableau
			 */
			function clearPopupModification(){
				$("#inputLibellePerimetre").val("");
				$("#tabModifPerimetre tbody tr").remove();
			}

			
			/**
			 * Ouverture de la popup de modification et préremplissage des
			 * champs
			 */
			function ouvrirPopupModifAvecData(data) {
				// Je commence par netoyer la popup
				clearPopupModification();
				
				// Je place le libelle du perimetre
				$("#inputLibellePerimetre").val(data.perimetre.libelle);
				
				$("#inputIdPerimetre").val(data.perimetre.id);

				// Puis je crée une ligne par activites récupérée
				$.each(data.listeActivites, function(i, activite) {
					var ligne = "<tr>";
					ligne = ligne + '<td><input value="'+ activite.libelle + '" class="form-control" type="text" maxlength="255" name="libellesActivites"><input type="hidden" name="libellesActivitesOld" value="'+ activite.libelle + '" /></td>';
					ligne = ligne + '<td>' + '<textarea class="form-control noResize" name="remarquesActivites">' + activite.remarque + '</textarea><input type="hidden" name="remarquesActivitesOld" value="'+ activite.remarque + '" />' + '</td>';
					if(activite.tacheLiees == false){
					ligne = ligne + '<td>' + '<input type="checkbox" name="supprActivite" value="' + activite.id + '" /> <input type="hidden" name="idActivites" value="'+ activite.id + '" />' + '</td>';
					}else{
						ligne = ligne + '<td>' + '<input type="checkbox" disabled="disabled" title="Des taches sont liées à cette activité" /> <input type="hidden" name="idActivites" value="'+ activite.id + '" />' + '</td>';
					}
					ligne = ligne + '</tr>';
					$("#tabModifPerimetre").append(ligne);
				});
				
				// J'ajoute les listeners de confirmation avant de quitter
				$(".form-control").on("change", function (e){
					isChanged = true;
				});
				$("input[name^='supprActivite']").on("change", function (e){
					isChanged = true;
				});
				
				
				$("#popup_block").css("display", "block");
				$("#contenair_popup_modifier").css("display",
						"block");
				$("#contenu_popup_modifierPerimetre_").css(
						"display", "block");

			}
			
			// Methode gérant le leave d'une popup
			function gererQuitterSansSauver(){
				if (isChanged){
					if (confirm("Des changements n'ont pas été enregistrés, voulez vous vraiment quitter ?")){
						$("#popup_block").css("display", "none");
						$("#contenair_popup_modifier").css(
								"display", "none");
						clearAllError();
					}
				}else{
					$("#popup_block").css("display", "none");
					$("#contenair_popup_modifier").css(
							"display", "none");
					clearAllError();
				}
				isChanged = false;
				isLineAdd = false;
			}
			
			function clearAllError(){
				$(".verifSubmit").each(function() {
					$(".actionMessages").html("");
					$(this).removeClass( "inputNonRempli" );
				});
			}

		});